<?php
namespace app\nadmin\controller;

/*
 * @explian 文件上传操作类
 */

class Upload extends Base
{

    //文件保存地址
    protected $saveDir = PROJECTDIR;
    //文件上传限制
    protected $fileRule = [
        //图片
        'image' => ['size'=>2048,'ext'=>'jpg,png,jpeg,gif'],
    ];

    //单文件上传
    public function uploadOne(){
        $file = request()->file('file');
        $dir = $this->getSaveDir($this->request->from);
        if(!$dir)
        {
            return echojson("上传来源地址错误",0);
        }

        // 移动到框架应用根目录/uploads/ 目录下
        $info = $file->validate($this->getFileRule($this->request->from))->move($this->saveDir.$dir);

        if($info){
            //返回文件地址
            return echojson("上传成功",1,str_replace("\\","/",$dir.'/'.$info->getSaveName()));
        }else{
            // 上传失败获取错误信息
            return echojson($file->getError(),0);
        }
    }

    //判断上传来源并返回文件存放目录
    protected function getSaveDir($from)
    {
        if($from == 'portrait')
        {
            //管理员头像上传
            return '/upload/portrait';
        }
        return false;
    }

    //获取上传文件的限制
    protected function getFileRule($from)
    {
        if($from == 'portrait')
        {
            //管理员头像上传
            return $this->fileRule['image'];
        }
        return[];
    }
}
